<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>

<%@ page
	import="org.apache.commons.fileupload.servlet.ServletFileUpload"%>
<%@ page import="java.io.File"%>
<%@ page import="org.apache.commons.fileupload.disk.DiskFileItemFactory"%>
<%@ page import="java.util.List"%>
<%@ page import="org.apache.commons.fileupload.FileItem"%>
<%@ page import="java.util.Iterator"%>
<%@ page import="java.io.IOException"%>

<%@ page import="board1.BoardDAO"%>
<%@ page import="board1.BoardTO"%>

<%
	boolean isMultipart = ServletFileUpload.isMultipartContent(request); // multipart로 전송되었는가를 체크

	if (isMultipart) {
		// multipart로 전송 되었을 경우
		File temporaryDir = new File("c:\\tmp\\");
		//업로드 된 파일의 임시 저장 폴더를 설정
		//			String realDir = config.getServletContext().getRealPath("c:\\tmp\\upload\\"); 
String realDir = "c:\\tmp\\upload\\";

		//톰켓의 전체 경로를 가져오고 upload라는 폴더를 만들고 거기다
		//tmp의 폴더의 전송된 파일을 upload 폴더로 카피 한다.

		DiskFileItemFactory factory = new DiskFileItemFactory();
		factory.setSizeThreshold(1 * 1024 * 1024);
		//1메가가 넘지 않으면 메모리에서 바로 사용
		factory.setRepository(temporaryDir);

		//1메가 이상이면 temporaryDir 경로 폴더로 이동
		//실제 구현단계 아님 설정단계였음
		ServletFileUpload upload = new ServletFileUpload(factory);
		upload.setSizeMax(10 * 1024 * 1024);
		//최대 파일 크기(10M)
		List<FileItem> items = upload.parseRequest(request);
		//실제 업로드 부분(이부분에서 파일이 생성된다)

		Iterator iter = items.iterator();
		//Iterator 사용

		BoardTO to = new BoardTO();

		String image_names = "";

		while (iter.hasNext()) {
			FileItem fileItem = (FileItem) iter.next();
			//파일을 가져온다

			if (fileItem.isFormField()) {
				//업로드도니 파일이 text형태인지 다른 형태인지 체크
				// text형태면 if문에 걸림

				if (fileItem.getFieldName().equals("chon_id"))
					to.setChon_id(fileItem.getString("UTF-8"));
				if (fileItem.getFieldName().equals("title"))
					to.setTitle(fileItem.getString("UTF-8"));
				if (fileItem.getFieldName().equals("board_id"))
					to.setBoard_id(fileItem.getString("UTF-8"));
				if (fileItem.getFieldName().equals("phone_number"))
					to.setPhone_number(fileItem.getString("UTF-8"));
				if (fileItem.getFieldName().equals("passwd"))
					to.setPasswd(fileItem.getString("UTF-8"));
				if (fileItem.getFieldName().equals("content"))
					to.setContent(fileItem.getString("UTF-8"));
				if (fileItem.getFieldName().equals("view_lv"))
					to.setView_lv(fileItem.getString("UTF-8"));
				if (fileItem.getFieldName().equals("from_dt"))
					to.setFrom_dt(fileItem.getString("UTF-8"));

			} else { //파일이면 이부분의 루틴을 탄다
				if (fileItem.getSize() > 0) {
					//파일이 업로드 되었나 안되었나 체크 size>0이면 업로드 성공
					String fileName = fileItem.getName();

					String Prefix = Long
							.toString((long) (Math.random() * 100000000));

					fileName = Prefix
							+ "_"
							+ fileName.substring(fileName
									.lastIndexOf("\\") + 1);

					try {
						File uploadedFile = new File(realDir, fileName);
						// 							out.println("파일[FileName] : " + uploadedFile.toString() + "<br/>");
						//실제 디렉토리에 fileName으로 카피 된다.

						fileItem.write(uploadedFile);
						fileItem.delete();

						if (image_names.equals(""))
							image_names = fileName;
						else
							image_names = image_names + ";" + fileName;
						//카피 완료후 temp폴더의 temp파일을 제거
					} catch (IOException ex) {
						out.println("FAIL");
					}
				}
			}
		}

		to.setPic_name(image_names);

		BoardDAO dao = new BoardDAO();

		if (dao.insertBoard(to)) {
			out.println("SUCCESS");
		} else {
			out.println("FAIL");
		}

	} else {
		out.println("FAIL");
	}
%>